自定义宏包
自定义命令和环境
自定义命令
自定义命令的格式如下:
\newcommand{\<name>}[<num>}>]{<definition>}
其中, <name> 是自定义的命令名称, <num> 是可选的, 用于指定新命令所需的参数个数, 如果省略, 则默认为 0, 即没有参数, <definition> 是命令的定义.
例子:
\newcommand{\reverse}[3]{#3#2#1} % 用法 \reverse{A}{B}{C} % 输出 CBA
\renewcommand: 可以修改已有命令;
\providecommand: 如果命令不存在, 则相当于 \newcommand, 如果命令已经存在, 则使用原有定义.
\renewcommand 和 \providecommand 的用法与 \newcommand 一样.
自定义环境
\newenvironment 可以用于定义一个新的原本不存在的环境, 如果想重新定义已有环境, 则要使用 \renewenvironment. 用法如下:
\newenvironment{<name>}[<num>]{<before>}{<after>}
其中, <before> 中的内容将在此环境包含的文本之前处理, <after> 中的内容将在遇到 \end{
例子如下:
\newenvironment{myabstract}{ {\centering \zihao{3}{摘 \qquad 要} \par} \zihao{-4} }{测试} % 使用 \begin{myabstract} 您好. \end{myabstract} % 输出居中的3号字体"摘要", 换行输出"您好.测试"
宏包与文档类的区别
宏包以 .sty 作为扩展名, 一般将一些功能与特征(如将文字彩色显示)包含在宏包文件中.
文档类以 .cls 作为扩展名, 一般将文档的逻辑结构进行格式化排版包含在文档类中, 如摘要三号黑体居中等信息.
如果我们自定义的命令可以用于各种文档类中, 则将它们置于一个宏包中, 否则就放在文档类中.
自定义宏包/文档类
宏包/文档类的结构
Identification
identification 用于标识自身是一个宏包/文档类, 并给出简要的描述.
宏包标识的格式为:
\NeedsTexFormat{LaTeX2e} \ProvidesPackage{<package>}[<date> <other information>] % 如 \NeedsTexFormat{LaTeX2e} \ProvidesPackage{latexsym}[2018/11/22 study]
文档标识的格式为:
\NeedsTexFormat{LaTeX2e} \ProvidesClass{<class-name>}[<date> <other information>] % 如 \NeedsTexFormat{LaTeX2e} \ProvidesClass{article}
注意, <package> 和 <class-name> 需要和文件名一致.
使用宏包/文档类
在 Latex 的宏包/文档类中装载另一个宏包的语法如下:
\RequirePackage[<options>]{<package-name>}[<date>] % 如 \RequirePackage{ifthen}
在 Latex 的宏包/文档类中装载另一个文档类的语法如下:
\LoadClass[<options>]{<class-name>}[<date>] % 如 \LoadClass[twocolmn]{article}
声明选项
声明的选项就是 \usepackage[options]{package-name} 中的 options. 语法如下:
\DeclareOption{<option>}{<code>}
如:
\DeclareOption{bachelor}{\xjtu@bachelortrue} \DeclareOption{master}{\xjtu@mastertrue} \DeclareOption{doctor}{\xjtu@doctortrue} \ProcessOptions\relax
\ProcessOptions\relax 会执行每个指定选项的 <code> 部分.
当用户在使用时, \documentclass[bachelor]{XJTUthesis} 表示使用 bachelor 选项.
Generated by Emacs 25.x(Org mode 8.x)
Copyright © 2014 - pinvon - Powered by EGO